Feature Overview
EXRECT() creates a rectangle object with extended functionality.
- The created rectangle object can be drawn and its inclusions and overlaps can be checked.
- Drawing and update functions return their own objects, so they can be written in succession.
- This function consumes 388 Token.(include comb() and cat() functions)
r = exrect('10 80 16 24') -- generate a rectangle object from a string. x:10, y:10, width:16, height:24 r.rf(6).rs(7) -- draw "r" with rectfill, and then draw it again with rect. ?r.con(13,80) -- true ?r.con(9,80) -- false ?r.con(exrect'12 82 8 8') -- true ?r.con(exrect'9 82 8 8') -- false ?r.hov(exrect'12 82 8 8') -- true ?r.hov(exrect'9 82 8 8') -- true --Check the code for further applications! |
This function is included in the KNUTIL library.
release note
In the code editor's search function, if you enter a search word and then double-click on the text, the search word is reset and you cannot use ctrl + G
( or ctrl + H
) to search for the next word.
Feature Overview
Capture the string for "One-off character" used in P8SCII from the sprite sheet and copy it to the clipboard.
- Simply print() the copied string to draw an image like spr().
- No decoder implementation is required.
!! Uses mouse control which does not work with BBS.
Please download and use it. !!
Type on your console
> load #p8ooccapture |
Note: Turn on "PUNY FONT MODE" when pasting into the code.
Depending on the character, sound may be made or the display of raw characters may be corrupted.
I have made one in the past with fillp and rectfill for equivalent purposes(FILLPatDraw), and I believe P8OOCPrint will be lighter and faster performing than this.
Control method
Printed samples of One-off characters
--** Add [\^.] to the copied CHARACTER and print(). **-- ?"\^.\0\14\14>>>\0\0" -- Tilted Heart ?"\^.\0\0「\0B<\0\0" -- Smiling mouth ?"\^.ヲュ◜◝◝○?゜" -- Tilted crystal |
Update history
Feature Overview
STRDSUM() sums two numerable strings.
- The number of digits it can handle exceeds the 32-bit limit. (Probably as long as the system will allow.)
- Match the string length to the longer of the two arguments.
- Negative values and values after the decimal point cannot be handled.(Insert a period in the output result.)
- This function consumes 63 Token.
This code may cause errors in versions prior to 0.2.5c.
?strdsum('32768','32768') -- 65536 ?strdsum('500','000500') -- 001000 ?strdsum('900109','123456') -- 1023565 |
Hello @zep
One of my game players reported this.
It seems that Pico8 games downloaded from Steam sometimes fail to start when a controller is connected.
Target game in which the bug occurred.
https://store.steampowered.com/app/1448220/KONSAIRI/
Running environment
- Apple silicon Mac.
- Gamepad "Sony PlayStation® DualSense™ Wireless Controller" ----STORE PAGE.
- Using Steam's controller linkage function (Bluetooth).
- Exported cart pico8 version 0.2.2c (also occurs in 0.2.5e)
Crash report
https://docs.google.com/document/d/1u615ThHWhl_YEK8agfgb5EENnyzfXKkhnk_ach4XDgA/edit?usp=sharing
Thank you for your cooperation.
In the screenshot, the pause menu does not appear.
But in the case of GIF output, the pause menu seems to appear.
(version 0.2.5c)
Feature Overview
BPACK() pack the value of the bit specification with bit width.
- By packs in the direction of low bits when multiple bit values are specified.
- By setting [number s] to a negative value, bit pack can be started from the decimal point.
- If there are fewer bit-width elements relative to the value to be packed, the bit-width elements are rotated.
- This function consumes 37 Token.
v=bpack({8,4},0,0xff,0xb) ?tostr(v,1) -- 0x00ff.b000 (bit-left-shift:0) v=bpack({8,4},8,0xff,0xb) ?tostr(v,1) -- 0xffb0.0000 (bit-left-shift:8) |
This function is included in the KNUTIL library.
release note
Feature Overview
BUNPACK() slice the value with bit width.
- By specifying the argument after [number w], a value of up to 32 bits can be sliced.
- By setting [number s] to a negative value, bit slice can be started from the decimal point.
- This function consumes 30 Token.
a,b=bunpack(0xf8,4,4,4) -- Value, First bit-shift, bit-width, ...[bit-width] ?a -- 15 (0xf) ?b -- 8 (0x8) |
This function is included in the KNUTIL library.
release note
Feature Overview
TBFILL() Create a table by specifying an index number.
- Create the table with the specified minimum and maximum indices and fill it with the value of the first argument.
- Multi-dimensional tables can be created by adding minimum and maximum arguments.
- This function consumes 30 Token.
-- one-dimensional table t=tbfill('yes',1,3) ?t[1]..' '..t[2]..' '..t[3].."\n\n" -- two-dimensional table t=tbfill('yes',1,2,1,3) t[2][2]='no' ?t[1][1]..' '..t[1][2]..' '..t[1][3] ?t[2][1]..' '..t[2][2]..' '..t[2][3] |
This function is included in the KNUTIL library.
release note
Feature Overview
JOIN() Join strings with a delimiter.
- Joins the argument strings with the specified delimiter.
- This function consumes 25 Token.
?join('====','----','----','----','----\n') ?join(' ',unpack({'test','[join]','is','ok!\n\n'})) ?join('\fa◆\f6','c','o','m','p','l','e','t','e\n') ?join('\-e=\-e',unpack(split('----------------------------',''))) |
This function is included in the KNUTIL library.
release note
Feature Overview
TTABLE() returns the table if the argument is a table.
- Returns FALSE if not a table.
- Use when table or string determination is required.
- e.g., when using a string for initialization and replacing it with a table
- Simultaneously check the type and reference the contents inline, as in
type(tbl)=='table' and tbl
.
- This function consumes 10 Token.
tbl = '1 5 10' -- Default value. tbl = ttable(tbl) or split(tbl, ' ') -- tbl = {1, 5, 10} ---- ---- -- Thereafter, the tbl is not initialized even if there are changes to the elements of the tbl. tbl = ttable(tbl) or split(tbl, ' ') |
This function is included in the KNUTIL library.
release note
Feature Overview
REPLACE() Replaces the specified string with the specified string.
- The first argument string replaces all matches to the second argument string with the third argument string.
- After the fourth and fifth words, you can further specify the search match and the words to be replaced.
- This function consumes 58 Token.
--"str" becomes "string for replace". str = replace('[test] for replace', '[test]', 'string') |
This function is included in the KNUTIL library.
release note
Feature Overview
SUM() returns the sum of the numbers in the given arguments.
- If the argument contains nil or false, the result will not be correct.
- If too many arguments are given, Out of memory is returned. (In the sample, up to 710 arguments)
- This function consumes 15 Token.
If you are concerned about some of the problems, consider using the "More Argments Ver" code.
Other tuple trick code: INRNG()
Feature Overview
INRNG() Tests if the value is between the lowest and highest values.
- Tests that the specified value is within a range.
- This function consumes 10 Token.
--[true] in range value inrng(5,1,10) --[true] lowest range value inrng(1,1,10) --[true] highest range value inrng(10,1,10) --[false] out of range value inrng(0,1,10) --Player:1 any key inrng(btn(),0x1,0xff) --Player:2 any key inrng(btn(),0x100,0xff00) |
This function is included in the KNUTIL library.
release note
One-off characters [8 chars of raw binary data] print unnaturally.
Or I may not understand this feature.
I was aware that "\^.00000000" would print nothing.
Setting Tab stop controll code to 0 and outputting tab characters at the same time causes pico-8 crash.
pico-8 version:0.2.4b
print("\^s0\t") |
Feature Overview
RCEACH() performs a two-dimensional loop in a single function.
- The rectangle value arguments correspond to [table] {x,y,w,h} and [string] "x y w h".
- You can refer to the current x and y values in the specified function.
- This function consumes 50 Token.
rceach({16,16,32,32},function(x,y,r) local c=(x+y)%8+8 pset(x,y,c) end) |
One of KNUTIL's functions, the object generated by EXRECT(), has a rectangle value format to be used for the RCEACH() argument.
may want to Use DMP() if check the converted table.
This function is included in the KNUTIL library.
Feature Overview
TMAP(), like foreach(), applies the function of the second argument to each element of the table.
- Usage is almost the same as foreach(), plus index values can be referenced within the function.
- The specified table is returned. (TMAP() nested functions can be applied multiply)
- The return value in the function specified in the argument can update each element of the table.
- This function consumes 31 Token.
local t={ 'toast' ,'letus' ,'bacon' ,'cheese' } t=tmap(t, function(v,i) ?i..'..'..v end) -------- t=tmap(t, function(v,i) v='super★'..v ?i..'..'..v return v end) -------- t=tmap({ 'shield' ,'armor' ,'sword' ,'ring' }, function(v,i) v=t[i]..'•'..v ?i..'..'..v return v end) |
may want to Use DMP() if check the converted table.
This function is included in the KNUTIL library.
release note
Feature Overview
COMB() combines two tables to create a hash table.
- Returns the joined table.
- The two arguments must be tables of index arrays.
- The argument is nondestructive.
- Hash tables are not in constant order. (This is a Lua specification.)
- This function consumes 26 Token.
local keys={'name','species','home','skill'} local values={'ruth','fox','port town','kon-psi'} local charcter=comb(keys,values) |
may want to Use DMP() if check the converted table.
This function is included in the KNUTIL library.
View Older Posts